{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 单变量线性回归\n",
    "\n",
    "## 场景\n",
    "  \n",
    "  作为连锁餐饮店的经营者，你打算新开一家新店，现在有城市人口和经营收益的数据，请根据这些数据作出决策\n",
    "\n",
    "\n",
    "### 工具导入"
   ],
   "id": "aa468ae610dd10fe"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-01T02:54:21.584787Z",
     "start_time": "2024-08-01T02:54:20.770272Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from IPython.core.pylabtools import figsize\n",
    "from pyparsing import alphas\n",
    "\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体为宋体"
   ],
   "id": "a07bc61f1c001914",
   "outputs": [],
   "execution_count": 4
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-01T02:54:23.991249Z",
     "start_time": "2024-08-01T02:54:23.979248Z"
    }
   },
   "cell_type": "code",
   "source": [
    "path ='data/ex1data1.txt'\n",
    "data = pd.read_csv(path,header=None,names=['人口','收益'])\n",
    "\n",
    "data.head()\n",
    "data.insert(0,'序号',1)\n",
    "data.head()\n",
    "data.shape[1]"
   ],
   "id": "448705fdfd5570cb",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 5
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-01T02:54:26.003177Z",
     "start_time": "2024-08-01T02:54:25.989993Z"
    }
   },
   "cell_type": "code",
   "source": "data.describe()",
   "id": "1185ed23d47ab5fb",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "         序号         人口         收益\n",
       "count  97.0  97.000000  97.000000\n",
       "mean    1.0   8.159800   5.839135\n",
       "std     0.0   3.869884   5.510262\n",
       "min     1.0   5.026900  -2.680700\n",
       "25%     1.0   5.707700   1.986900\n",
       "50%     1.0   6.589400   4.562300\n",
       "75%     1.0   8.578100   7.046700\n",
       "max     1.0  22.203000  24.147000"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>序号</th>\n",
       "      <th>人口</th>\n",
       "      <th>收益</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>97.0</td>\n",
       "      <td>97.000000</td>\n",
       "      <td>97.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.0</td>\n",
       "      <td>8.159800</td>\n",
       "      <td>5.839135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.0</td>\n",
       "      <td>3.869884</td>\n",
       "      <td>5.510262</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.0</td>\n",
       "      <td>5.026900</td>\n",
       "      <td>-2.680700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.0</td>\n",
       "      <td>5.707700</td>\n",
       "      <td>1.986900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.0</td>\n",
       "      <td>6.589400</td>\n",
       "      <td>4.562300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.0</td>\n",
       "      <td>8.578100</td>\n",
       "      <td>7.046700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.0</td>\n",
       "      <td>22.203000</td>\n",
       "      <td>24.147000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 6
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-01T02:54:27.875233Z",
     "start_time": "2024-08-01T02:54:27.697489Z"
    }
   },
   "cell_type": "code",
   "source": [
    "data.plot(kind='scatter',x='人口',y='收益')\n",
    "plt.show()"
   ],
   "id": "ae7b7aa6a56484c",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAGtCAYAAADasUQ3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1mElEQVR4nO3dfXRU9YH/8c9kEoKRPJJBV4wkIRSFswhFkIU2Fle77jaKtqsr0mVVrLq2wS2Vtq7uKZ49BU8PPpzFLq4rFWm3sXatetRSdX0AF0sBJSibqIQkiND+TCDMkAxOQri/P+hMM8k83JnMzL135v06J+eYO3duvnO93PuZ76PLMAxDAAAANpdndQEAAADMILQAAABHILQAAABHILQAAABHILQAAABHILQAAABHILQAAABHILQAAABHyLe6AKl06tQpHT58WMXFxXK5XFYXBwAAmGAYho4fP65zzjlHeXnR61OyKrQcPnxYVVVVVhcDAAAk4eDBgzr33HOjvm5ZaHn++ef17W9/Wx9//LFmz56tjRs36oILLlBjY6MeeeSR0H6TJ09WW1ubqWMWFxdLOv2hS0pK0lJuAACQWj6fT1VVVaHneDSWhJb9+/frpptu0qOPPqpLLrlEjY2NuuWWW7Rt2za98847eumllzR//nxJktvtNn3cYJNQSUkJoQUAAIeJ17XDZcWCiS+++KI++eQT3X777ZKkN954Q1dccYX6+vpUUVGhw4cPa9y4cQkf1+fzqbS0VF6vl9ACAIBDmH1+WzJ6qKGhIRRYJOnDDz9UXV2d3nvvPRmGoZkzZ+qMM87QFVdcoY8//tiKIgIAAJuxfMhzf3+/1q5dqzvuuEOtra2aPn26mpqa1NLSooKCAt12221R3xsIBOTz+cJ+AABAdrKkeWio7373u3rllVe0c+dOFRQUhL124MAB1dbWqqenJ2J10apVq3TfffeN2E7zEAAAzmG2ecjS0PLqq6/qa1/7mrZv365p06aNeN3r9aqsrEwffPCBpk6dOuL1QCCgQCAQ+j3Y+5jQAgCAc9i6T4sktbe3a8mSJVq/fn0osKxYsUJPP/10aJ+dO3cqLy8v6twrhYWFoZFCjBgCACC7WTLk+cSJE2poaNDVV1+tRYsWqbe3V5J04YUX6p577tHZZ5+tkydPqrGxUTfeeKOKioqsKCYAALARS0LLyy+/rNbWVrW2tuo///M/Q9s7Ojr0wQcfaNGiRSouLtY111yj1atXW1FEAABgM5Z3xE0l5mkBAMB5zD6/s2rtIQAAkB7tXb06cNSv6vFnqqbyTEvKQGgBAABRHfP3a3lTs7bu6wptq5/i0brFs1RaVBDjnaln+eRyAADAvpY3NWtbW3fYtm1t3Wps2p3xshBaAABARO1dvdq6r0uDw7q/DhqGtu7rUkd3X0bLQ2gBAAARHTjqj/l65xFCCwAAsIFJFbHnSasen9kOuYQWAAAQUa1nnOqneOR2ucK2u10u1U/xZHwUEaEFAABEtW7xLC2oqwzbtqCuUusWz8p4WRjyDAAAoiotKtCmZXPV0d2nziN9zNMCAADsrabSurASRPMQAABwBEILAABwBEILAABwBEILAABwBEILAABwBEILAABwBEILAABwBEILAABwBEILAABwBGbEBQBknfauXh046rd0ynmkHqEFAJA1jvn7tbypWVv3dYW21U/xaN3iWSotKrCwZEgFmocAAFljeVOztrV1h23b1tatxqbdFpUIqURoAQBkhfauXm3d16VBwwjbPmgY2rqvSx3dfRaVDKlCaAEAZIUDR/0xX+88QmhxOkILACArTKooivl69Xg65DodoQUAkBVqPeNUP8Ujt8sVtt3tcql+iodRRFmA0AIAyBrrFs/SgrrKsG0L6iq1bvEsi0qEVGLIMwAga5QWFWjTsrnq6O5T55E+5mnJMoQWAEDWqakkrGQjmocAAIAjUNMCAEAasaRA6hBaAABIA5YUSD2ahwAASAOWFEg9QgsAACnGkgLpQWgBACDFWFIgPQgtAACkGEsKpAehBQCAFGNJgfQgtAAAkAYsKZB6DHkGACANWFIg9QgtAACkEUsKpA6hBQCADGBm3NEjtAAAkEbMjJs6dMQFACCNmBk3dQgtAACkCTPjphahBQCANGFm3NQitAAAkCbMjJtahBYAANKEmXFTi9ACAEAaMTNu6jDkGQCANGJm3NQhtAAAkAHMjDt6NA8BAABHILQAAABHsCy0PP/886qtrVV+fr4uvvhitba2SpL27t2rOXPmqLy8XCtXrpQxbEIeAACQmywJLfv379dNN92k+++/X4cOHdKkSZN0yy23KBAI6Morr9Ts2bO1a9cutbS0aOPGjVYUEQAA2IwloaW1tVWrV6/Wddddp7POOkv/+I//qF27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kqTBwcH0lhYAAOSsuDUtU6dO1eOPP65PPvlEY8aM0eTJk7V//36de+65kqSxY8dq9uzZmj17tmbOnJnu8gIAgBxluk/LuHHj5PrjbJATJ04MbS8uLtaSJUskSYFAQN/5zndSXEQAAACT0/gfPHhQr7zyiiTJ7/frxhtvVH9/vySpo6ND55xzjs455xxVV1enraAAACC3xQ0tr776qi644AL993//tyTpk08+0ebNm7Vq1SpJUnV1tT755BMdPHhQbW1taS0sAADIXXGbh2bOnKnXXntNF198sZ555hl97nOf0+bNm7Vw4UJdfvnl6u3t1TPPPCPDMDQwMBDvcAAAAEmJG1o8Ho88Ho8khULJ5z//eT300EP6+te/rhkzZuill16Sy+XS4OCgUrgqAAAAQEhC0/gXFRWFTdF/6aWX6vbbb9d1110n6XR/lwkTJoRmzc00ZsQFAMB5Uj4jrsvl0q9+9auwbS+88ILOPDN8nZibb745waICAADEZ3rOfcMw9LWvfS1s2/DAsnnzZr3zzjupKRkAAMAQpmta8vLy5HK5tG7dOp133nn68z//c9XW1oZeNwxDa9eu1VVXXZWWggJwlvauXh046mflbgApk9CCiW63W62trXrllVf0/vvva3BwUNdff72WL1+uf/u3f9PAwIDuuuuudJUVgAMc8/dreVOztu7rCm2rn+LRusWzVFpUYGHJADidqeahYOfbsWPH6t///d/1wgsvqLOzU2+++ab27dun2tpaPfXUU9q8ebMKCszdlI4cOaKamhp1dnaGtu3du1dz5sxReXm5Vq5cyUgkwIGWNzVrW1t32LZtbd1qbNptUYkAZIu4oaWvr091dXX6j//4j9A0/s3NzXr44Yd18803a9u2bbr11lvl8/n04osvmvqj3d3damhoCAssgUBAV155pWbPnq1du3appaVFGzduTOpDAbBGe1evtu7r0uCwLxyDhqGt+7rU0d1nUckAZIO4ocXtduuHP/yhnn32WXm9Xj388MO6+uqrtWfPHv3TP/2TPvnkE/34xz/WL3/5S915553as2dP3D96/fXX6/rrrw/btnnzZnm9Xj344IOaPHmyVq9erQ0bNiT/yQBk3IGj/pivdx4htABIXtzQMnbsWP3DP/yDfvOb36i5uVm//e1vJUkNDQ265pprVFhYKEn68pe/rDvvvFNLly7V4OBgzGM+9thjuvPOO8O27dmzR/PmzVNRUZEkacaMGWppaYl5nEAgIJ/PF/YDwDqTKopivl49ng65AJJnesizJF1wwQX6xS9+oZ/+9Kfq7u4e8frKlSt10UUXhZqRohk66ijI5/OppqYm9LvL5ZLb7VZPT0/U46xZs0alpaWhn6qqqgQ+DYBUq/WMU/0Uj9zD7gFul0v1UzyMIgIwKqZGD1144YUqKioKCyOGYejJJ58M288wDJ04cUJ5eQllodMFyc8P1doEjR07Vn6/X+Xl5RHfc/fdd2vFihWh330+H8EFsNi6xbPU2LQ7bPTQgrpKrVs8y8JSAcgGpkLL+vXrR4QW6XRIufbaa/XUU08pPz9fp06dCpvmPxEVFRXau3dv2Lbjx49rzJgxUd9TWFg4IugAsFZpUYE2LZurju4+dR7pY54WACljKrTMnz9fgUBAhmGMCBEXXHCBTpw4oS984QujKsicOXP0+OOPh37v7OxUIBBQRUXFqI4LwBo1lYQVAKlluh3nZz/7mYqKilRQUBD6yc/P14svvqinnnpq1AWpr6+X1+vVpk2bJEn333+/LrvsMrnd7lEfGwAAOJ/pVZ77+/t18uTJEc0xO3fulMfj0eTJkxP/4y6XOjo6VF1dLUl67rnndMMNN6i4uFiDg4PasmWLpk+fbvp4rPIMAIDzmH1+mw4tmXLo0CHt2rVL8+fPl8fjSei9hBYAAJzH7PM7obWHMmHixImaOHGi1cVICRaMAxLHvxsA0dgutGQDFowDEse/GwDxJD6hCuJiwTggcfy7ARAPoSXFWDAOSBz/bgCYQWhJMRaMAxLHvxsAZhBaUowF44DE8e8GgBmElhRjwTggcfy7AWAGoSUN1i2epQV1lWHbWDAOiI1/NwDisd3kcqNht8nlWDAOSBz/boDc49jJ5bIJC8YBiePfDYBoaB4CAACOQGgBAACOQGgBAACOQGgBAACOQEdcIMuxajKAbEFoAbIUqyYDyDY0DwEp0N7Vqzc+/NRWC/uxajKAbENNCzAKdq3NCK6aPNzQVZNpKgLgNNS0AKNg19oMVk0GkI0ILUAEZpp7grUZg8NWwhham2EVVk0GkI1oHgKGSKS5x0xthlVNMMFVk7e1dYeFKrfLpQV1lTQNAXAkalqAIRJp7rF7bQarJgPINtS0AH+UaOdVu9dmlBYVaNOyuayaDCBrUNMCW7DDkOFkOq86oTajpvJMLZw6gcACwPGoabFYrs9Waqchw8k091CbAQCZQ2ixiJ0e1laK1Ydk07K5GS3LaJp7aioJKwCQbjQPWcSu83tkkh2HDNuhuccOTWUAYEfUtFiA2UpPs+OQYSube6h9A4DYqGmxALOVnmbnIcNWdF6l9g0AYiO0WKAizrdmq+f3iCbVzRbBPiRulytsu9vlUv0Uz6gDQ6abWUbz9+zYVAYAdkPzkAUeeGVf1NdS8bBONbPNFsmMhFq3eJYam3aHHXu0fUgy2czS3tWr//u9T5ve7tTOzp6k/54dm8oAwG4ILRkWrT9L0F1/9bmEj5fuIdPxRviMJiSkow9JJkYkRfrMo/l7dm4qAwC7ILRkWLxv1Ef6+k0dJ1O1CWY6Df/g+f9LKCREClqpGjKcqU7OkYLRaP6e3WfXBQA7oE9LhqXqG3WmOm3GC1nb27tN98U45u/X0g07dOkDW3TTEzu1cO2bWrphh7z+gYyVNxWdnKP1Pxnt37PDcGsAsDNqWjIsFd+oMzlkOl7IklwxXx3aFyMTzTaZaGaJF4yS/XvMrgsAsVHTYoHRfqPO5JDpeCN8Lq6piPn+4EM7U6Nj0j0iSTIT5Eb391grCAAio6bFAqP9Rp3pTpuxRviUFhWYqjnK5OiYdIxIGipabdlQNOsAQOoRWiyUbOfTTHfajBeyzISETAatTDSzRPrMcyaV68b51Zo2sZRaEgBIA5dhmOhN6BA+n0+lpaXyer0qKSmxujhp5fUPjHhoWj3le7yQsHTDjqhBK9OLI6YK/U8AYPTMPr8JLQ439KFpGEba52wZDTsGLQCA9cw+v2kecriayjNVXlTgiIX2GB0DABgNRg9lAacttMfoGABAMggtJmV68T2znLzQnl3PKQDAnmgeiiOTi+8lw4kL7dn9nAIA7Imaljjs3vTixIX27H5OAQD2RGiJwY5NL8ObVDIxA2wq2fGcAgCcgeahGOzU9BKrSSXZGWAjrbacbnY5p1Z8dqvk0mcFkN0ILTHYqeklUpPK/7Z1qbFpt1ZdNU03faFa36iv0clTRtyHk5V9Sqw+p7nUnyaXPiuA3EDzUAx2aXqJ1qRyypC27uvSpQ9s0U1P7NTfb9ihJ/63UxVFY2Iez8o+JVaf01zqT5NLnxVAbiC0xDHaFZlTIV6TylDxHkp26FMy2nOa7FBpO3z2TMmlzwogd9A8FMfQWVy3t3dLcmle7fiMVq/Ha1IZauhDKVKthR36lCQ7M+5omzvs8NkzJZc+K4DcYbualsbGRrlcrtBPXV2d1UXSMX+/fvD8/+nuX+3V3b96XwvXvqmlG3bI6x/IyN+v9YzTuEJ3Qu/pPBL5m3Qq+pSkalK4RGfGHW1zh9X9aTIplz4rgNxhu9Dyzjvv6KWXXlJPT496enq0e7f17e9W9w1o7+pVb2AwofdEeyiNpk/JMX+/lm7YEepDk8nwlormDqv702RSLn1WALnDVqHl5MmT2rt3r+rr61VWVqaysjIVFxdbWiY79A1IpE+LmYdStD4l3/ny52LWoFgZ3sw0d5hhhz5KmZJLnxVAbrBVn5b33ntPhmFo5syZOnTokC655BI99thjOu+88yLuHwgEFAgEQr/7fL6Ul8kOfQMS6dNi5qE0vE9JRdEYPfDKR1r0422hfYb3FQmGt+Hi9aFJlVQ1d+TSStO59FkB5AZb1bS0trZq+vTpampqUktLiwoKCnTbbbdF3X/NmjUqLS0N/VRVVaW8THboGxCtqj/PdTpcvHHXl/TETXP0xl1f0qZlc013Eg72KXnglY/i1qCkqqYjWalu7sillaZz6bMCyG4uwxjW7mEjBw4cUG1trXp6elRSUjLi9Ug1LVVVVfJ6vRH3T9bSDTu0ra07rInI7XJpQV2lNi2ba+oYo52V1OsfGDHrbSomCmvv6tWlD2yJ+vobd31JNZVnmt4vndJ1DgAA1vL5fCotLY37/LZV89BwZWVlOnXqlH7/+99H/BCFhYUqLCxMezmSnSZfSt2spOmq6jfb/BWs6YgW3oaXJR1Tx9PcAQC5zVahZcWKFZo3b56uu+46SdLOnTuVl5eXlmafRIzmYRmr86rZWpqhaipT+6BOpPnLTHjLxNTxqT4HAABnsFVomTlzpu655x6dffbZOnnypBobG3XjjTeqqMh8R9R0SvRhaXXnVTPM1qAEa07uWzRdkqKGt1SHNAAAgmwVWpYuXarW1lYtWrRIxcXFuuaaa7R69Wqri5WU9q5evfDe4Zj72GVW0lg1KHsO9uieZ/dq7+E/jcyqn+LRd778uVDn26HBxu4hDQDgXLbuiJsosx150ilS80g0mei8moihzV/lRQWmP0ew+efdgz266YmdUfd74qY5Wjh1QtzjpaM/DADAvrKiI64TRWoeGS5a51WrDW3+Wrphh/63LX5gkf7U/LPqqmkx9/t/3s9i1rZkoj8MAMC5bDVPi9NFmz13OLvPShr8HKdM1sEFm39cf5wzZfhcKkHfj7Nuk9XLJQAA7I3QkkLxhg9/+/IpCU8Al2nH/P1a/lRyIaHzSF/EqeOHixRE0r1cQqoWeQQAWIfmoRSKN3z4qgsnWtYkZLafyPKmZrUcTm45hOrxZ4YND9/efkR3/+r9EftF6pibruUSaHICgOxBaDHJzEM/0QnYMiGRh3a00T/xRPp8NZVnxp3af2gQSddyCQzBBoDsQfNQHMf8/Vq6YYcufWCLbnpiZ8w+GZL9VtZNpJ9IIqtJDxXt8yUSRFK9tpBkjxW6AQCpQ01LHIl+U8/UVPNman4SnTclkdWkg366bK6+OMUT8bVEa55Gs1xCJHZYoRsAkDqElhhGM1lauqaaT6S5J9GHdrSQEcvJOEOMEgkiqQ58dlihGwCQOoSWGBJ96GdiUrREan6SeWhHChmJHmOoZIJIqgKfHfsYAQCSR2iJwexDP17tR6rCTKI1P8k8tCOFjB88/3+jfvBbtchhqpucAADWIbTEYPahH6324/afvaMCd17Khtsm00cjkYf28HAVPJaTH/yZ6mMEAEg/1h6Kw+sfGPHAHl6LcukDW6K+P8+lsJll81zS7Enl+uXt8xMuS7y/FWsto1gPbbP9ZHjwAwDSwezzm9BiUrQH9hsffhpzkcBo/vycEv3slnkJ17gs3bAjas1PsvOOpOOYAACYZfb5zTwtJtVUnqmFUyeMqGFIZpiwJL1/2KcvrX0j6nwvQcOnn0/1PDDMZQIAcAr6tIxStH4vLknxqrB6/AO6ZdPOiE1FsZpsUtlHg7lMAABOQU1LCkSq/Sgz2eyzs7MnYm1GvJlso9X8JIq5TAAATkFNSwoMH6Hidrm09Cc7TL8/0nwvyU5qlyjmMgEAOAU1LSYN71sSSbD2w+xsskHDazPMNNmkkt3WSwIAIBJqWuJIZNr8ILOdc90uaUHdyMUAM91kw1wmAAAnoKYljkRWSQ6KtmLxcAvqPBFrM9Kx4rEZqeonAwBAOlDTEsNo+pZEmkW2fopHd/3V53Skrz9ubYaTZ6EFACAdCC0xjGY4cKwml/au3lC/FLPvd7tcGjQMHfX3J7UEAAAATkdoiSEVfUuGruGTTP+Y8qIC/eD5zpStXwQAgFPRpyWGVPctSaZ/TDLvAQAgGxFa4kjVcOBkpstnin0AAP6E5qE4UjUcOJn+MUyxDwDAn1DTYlJwOLBhGHEnmYskmf4xTLEPAMCfUNNiUqxOtEf6Ajpw1B+zFiaZ6fKZYh8AgD9xGUaCc87bmM/nU2lpqbxer0pKSlJ67KUbdowID3k63XzU4x8IbYs1ssfrH4g4d0uskUDJvAcAACcx+/wmtJjQ3tWrSx/YYmrfYC3IpmVzIx7nwFG/8vNc+qTnhFySzikbq0FDcfvKMMU+ACBbmX1+0zxkQrwOsUNFmi03UtNSJLFqUIbO9wIAQC6iI64JZhdAHGroSsyR5lqJhPlXAACIjtBigtkFEIfKzzu9b7S5ViJh/hUAAKIjtJgUaZK5WE6eOh1SEmlaChpaSwMAAE6jT4tJIxcwlJb+ZGfU/YNzqCTTtBRr/pVgZ1465AIAcg2hJUFDO8SamUMl2lwrkcSafyWZxRYBAMgmNA+Ngtl1icw2Lc06r0x/d9G5Efu0sHAiACDXMU9LCpidQ2XoftLpviv5eS4dOzGgTW93amdnT2jfobUo8eaJeeOuL9FUBABwLOZpySCzc6gM3y/430s37NC7B46F7RusRdm0bC4LJwIAIEJL2rR39ep3HUckuTSvdnzUUBEcEj3c0OHP6Vw4kY69AACnILSk2DF/v+74r3f19v4jYdv/ona8Hv367BGdZs3UoiycOiHlCyfSsRcA4DR0xE2x5U3NIwKLJP22/UjETrNma1HMdvpNpJx07AUAOAk1LSkUraknaPiaRNLpIdHlw1aKDiovKgjtO3yemNE055hpkqKpCABgN9S0pJCZ2W9/1x5eC9Pe1RsxsEhSj39gxPDnVAz2MtMkBQCA3VDTkkJmZr/9/q/e16/f/0Oo74jZkUGp7IOSzo69AACkCzUtCWrv6tUbH346ogbkmL9f33vmPVPHGNp3xGyASGUflGgLQLpdLtVP8dA0BACwJWpaTIpV02HI0MK1b0Zt5hluaN+RaNP8Dx0ZlI4+KOsWz1Jj0+6w446mYy8AAOlGaDEpVk2Hv/+k6cAyVGPTu/qvZfPiBoh0TC6Xyo69AABkAqHFhHg1HclqOewLzXobK0DEa0Jyu6Q3Pvw0qeBhdjZfAACsRmgxwcyooFhckiKN+TllhA+DjhYgojchSSVnFGjpT3aGtjFBHAAgW9ER1wQzo4KimfZnJZp+TuzFG80MMY40uVzJGQXyDmuWctIEcdE6NQMAEAk1LSZEq+kwo+X3Ps2pLo+5j5khxsP7oLhdCqthCXLCBHEsIQAASIYta1r27t2rOXPmqLy8XCtXrkzJhGqjtW7xLM06ryyp97574JjKiwpSMsS4pvJMLZw6QYNxTomdJ4hjCQEAQDJsF1oCgYCuvPJKzZ49W7t27VJLS4s2btxodbFUWlSgb15aF3Of71z+uYjbBw1DPf4BfX5Y6BnNEGOnThAX7NQ8vMZqaA0RAACR2K55aPPmzfJ6vXrwwQdVVFSk1atX65vf/KZuuukmq4sWNyh4igtjvn7HpXWqHn9mSoYYm5nfxY7SMXwbAJAbbFfTsmfPHs2bN09FRacDwowZM9TS0hJx30AgIJ/PF/aTTvFmkp1bUxHz/cGgsnDqhJQ8mFO98nMmOLWGCABgPdvVtPh8PtXU1IR+d7lccrvd6unpUXl5eIfWNWvW6L777sto+WJNBFdaVJDR2g8nThDn1BoiAID1XIYderkO8b3vfU8DAwN68MEHQ9uqqqq0fft2TZw4MWzfQCCgQCAQ+t3n86mqqkper1clJbGHGY9WtKDg9Q+MCDWMjAnHOQIADOXz+VRaWhr3+W27mpaKigrt3bs3bNvx48c1ZsyYEfsWFhaqsDB2P5J0iTYRnBNrPzKNcwQASIbtQsucOXP0+OOPh37v7OxUIBBQRUXs/iJ2w/T48XGOAACJsF1H3Pr6enm9Xm3atEmSdP/99+uyyy6T2+22uGQAAMBKtqtpyc/P12OPPaYbbrhBK1eu1ODgoLZs2WJ1sUZo7+rVgaN+mjYAAMgQ24UWSbr66qu1b98+7dq1S/Pnz5fH47G6SCFMQQ8AgDVsN3poNMz2Ph6NpRt2RB2uu2nZ3LT8TQAAspnZ57ft+rTYGVPQAwBgHUJLAsxMQQ8AANKD0JIApqAHAMA6hJYERFt7KM91ujMuo4gAAEgfQkuC1i2epYtrwye6O2VIA4On5PUPWFQqAACyH6ElQaVFBcrPyxtx4nZ0HFVj025LygQAQC4gtCQoOILo1LDtmRpB1N7Vqzc+/JSRSgCAnGPLyeXszMwIonT0bWFSOwBArqOmJUFWjSBa3tSsbW3dYdu2tXXTJAUAyBmElgRFG0HkdrnSNoKISe0AACC0JGXd4llaUFcZtm1BXaXWLZ6Vlr/HpHYAANCnJSmlRQXatGyuOrr71HmkL+0rPTOpHQAAhJZRqalMb1gJCjZJRVuokUntAAC5gOYhh8h0kxQAAHZDTYtDZLpJCgAAuyG0OEymmqQAALAbmocAAIAjEFoAAIAjEFoAAIAjEFoAAIAjEFoAAIAjMHrIpPauXh046meoMQAAFiG0xHHM36/lTc3auq8rtK1+ikfrFs9SaVGBhSUDACC30DwUx/KmZm1r6w7btq2tW41Nuy0qEQAAuYnQEkN7V6+27usKW+9HkgYNQ1v3damjm9WVAQDIFEJLDAeO+mO+3nmE0AIAQKYQWmKYVFEU8/Xq8XTIBQAgUwgtMdR6xql+ikdulytsu9vlUv0UD6OIAADIIEJLHOsWz9KCusqwbQvqKrVu8SyLSgQAQG5iyHMcpUUF2rRsrjq6+9R5pI95WgAAsAihxaSaSsIKAABWonkIAAA4AqEFAAA4AqEFAAA4AqEFAAA4AqEFAAA4AqEFAAA4AqEFAAA4AqEFAAA4AqEFAAA4AqEFAAA4QlZN428YhiTJ5/NZXBIAAGBW8LkdfI5Hk1Wh5fjx45Kkqqoqi0sCAAASdfz4cZWWlkZ93WXEizUOcurUKR0+fFjFxcVyuVwpO67P51NVVZUOHjyokpKSlB3XSTgHp3EeTuM8cA6COA+ncR5Gdw4Mw9Dx48d1zjnnKC8ves+VrKppycvL07nnnpu245eUlOTsxRjEOTiN83Aa54FzEMR5OI3zkPw5iFXDEkRHXAAA4AiEFgAA4AiEFhMKCwv1gx/8QIWFhVYXxTKcg9M4D6dxHjgHQZyH0zgPmTkHWdURFwAAZC9qWgAAgCMQWgAAgCMQWgAAgCMQWiBJ2rhxo1wu14ifjRs3xnzflVdeGbb/ZZddlpkCI+WOHDmimpoadXZ2hrY9//zzqq2tVX5+vi6++GK1traaOhbXhbMNvxaSvT9IXAtOF+0eYNm9wYDxrW99y5AU+pk8eXLc97z55pvG+eefb4wfP9544IEHMlDK9AoEAkZPT0/o5+DBg0ZlZaWxf//+mO/7sz/7M+P9998Pva+3tzdDJU6d7u5uo7q62ujo6Ahte//9942LLrrIKCsrM+666y7j1KlTpo7l1Ouiq6vLmDdvniEpdB7a2tqM8vJy4xe/+IXxhz/8wbj22muN+fPnmzqek6+LSNdDMvcIw3Dm9RDpWkj2/mAYzr0WnnvuOaOmpsZwu93G3LlzjZaWFsMwcuveEO0eYOW9gdBiGMZf/MVfGC+99FLoJPp8vpj7f/rpp0ZJSYlx3333GR999JHx+c9/3nj99dczVNrM+OEPf2jceuutMfc5ePCgcfbZZ2eoROkR6Qb92WefGdXV1cZtt91mtLW1GX/zN39j/OQnP4l7LCdfF3/5l39pPPzww2Hn4YUXXjDWr18f2uf11183xowZE/dYTr4uIl0PhpH4PcIwnHs9RLoWhjNzfzAM514L0R7KuXZviHYPsPLekPOhZWBgwCguLjaOHz9u+j0PPfSQMXXq1FDCfu6554wlS5akq4gZd+LECWPChAlRb1hBzzzzjOHxeIyJEycaRUVFxt/93d8ZR48ezUwhUyTSDfrZZ581ysvLjb6+PsMwDKO5udlYsGBB3GM5+boIfmOO9aBav369MW3atLjHcvJ1Eel6SOYeYRjOvR7iXQtm7w+G4dxrIdpDORfvDUNFuwdk8t6Q831a3nvvPRmGoZkzZ+qMM87QFVdcoY8//jjme/bs2aNLL700tCjj3Llz9e6772aiuBnx85//XPPmzVN1dXXM/T766CPNnj1bL7/8snbt2qXOzk798z//c2YKmSKPPfaY7rzzzrBte/bs0bx581RUVCRJmjFjhlpaWuIey8nXRW1tbczX+/v7tXbtWt1xxx1xj+Xk6yLS9ZDMPUJy7vUQ71owe3+QnHstNDQ06Pbbbw/9/uGHH6quri4n7w1B0e4BGb83JBRxstDPfvYz4+KLLzZ27NhhtLe3Gw0NDcYVV1wR8z1f/epXjR/96Eeh33t7e42SkpJ0FzVj5syZY/z6179O+H1vvvmmUVlZmYYSpZ+GfKtcsWKFcccdd4S9XllZGfcbQTZcF4ry7XrlypXGhRdeaPT39yd8TCdeF0PPQzL3CMNw/vUQ7VpI9v5gGM68FgKBgDF58mTjkUceyel7Q7R7QKbvDVm1ynMylixZoiVLloR+f+SRR1RbWyufzxd1lcr8/PywaYrHjh0rv9+f9rJmQltbm9ra2pLq4V9WVqbu7m4FAgFHT2U9/P+v9Kf/x+Xl5abfly3XxauvvqpHH31U27dvV0FBQcLvd/p1kcw9QsrO62E09wfJmdfCvffeq3HjxunWW2/Vvffem5P3hmj3ACvuDTnfPDRcWVmZTp06pd///vdR96moqFBXV1fo9+PHj2vMmDGZKF7aPf3002poaDB1Af7t3/6ttm/fHvp9586dOvvssx1zM4pm+P9fydz/42y8Ltrb27VkyRKtX79e06ZNM/WebL0ugszcI6TsvB4SuT9Izr8Wgg/ln//85yooKMjJe0O0e4BV94acDy0rVqzQ008/Hfp9586dysvLU1VVVdT3zJkzJ+zENzc3a+LEiWktZ6b85je/0cKFC8O2+Xw+DQwMjNh3xowZ+va3v63f/e53evHFF/Uv//Ivpto17W74/9/Ozk4FAgFVVFQk9D6nXxcnTpxQQ0ODrr76ai1atEi9vb3q7e2V8cflynLlukjmHiFl3/UgRb4/SNl5LUR6KOfavSHaPcDSe0PCjVBZ5sknnzTq6uqMLVu2GK+99ppx/vnnGzfffLNhGIbh9XojttN1dXUZY8eONV5//XVjYGDA+MpXvmJ861vfynTRU87v9xtjxowxWltbw7ZPmjTJePbZZ0fs39/fb9x8881GcXGxMXnyZOO+++4zBgYGMlTa1NKw0SIej8d48sknDcMwjNtuu81oaGgI7ZvN14WGjaLSkLlJgj/B17P5uhj6OWPdIwwje68HDevTEu3+YBjZdy34/X7jggsuML7xjW8Yx48fD/309/fn1L0h2j3goYcesuzekPOhxTAM4/vf/75RVlZmVFVVGcuXLw9NdhPtxBuGYfz4xz82CgoKjMrKSmPSpEnGH/7whwyWGKk2/Ab97LPPGmeccYYxYcIEY/z48cbevXtDr3FdZL/h10O0e4RhcD1ko1iBnXuDtVyG8cf6HCSsra1Nra2tuuSSS2J2yIMzHTp0SLt27dL8+fPl8XhMv4/rAkNxPWQf7g3WIbQAAABHyPmOuAAAwBkILQAAwBEILQAAwBEILQAAwBEILQBspbW1Vd3d3VYXA4ANEVoA2MrXv/51Pfroo1YXA4ANEVoA2Ep+fr7OOussq4sBwIZyfpVnAPbidrsVb/oot9ut0tJS5eVF/t7l9/t13XXXaePGjWkoIQCrEFoA2EpXV5d6enpi7lNYWKgdO3aorq4u4uurVq3SoUOH0lE8ABaieQiAbXz22Wf6+OOPtWfPnpj7jRkzJu6x3G53qooFwCYILQBs47e//a3Ky8v1+uuv6+jRo1YXB4DNEFoA2MaTTz6pJUuW6Ktf/arWrl1rdXEA2Ax9WgDYwv79+/XMM8/od7/7nfLy8jRnzhzdfPPNUfutAMg91LQAsNzg4KBuueUW3XLLLZo2bZrOP/98ffOb39TixYvl9/utLh4AmyC0ALDU4OCg/v7v/15er1f/+q//Gtq+atUqSdJf//VfM0MuAEmEFgAW+uijj3T55ZerublZL7/8ssaNGxd6bezYsXrllVfU19enGTNmaOPGjRocHJQkDQwMaO7cuaqsrIz486Mf/Si0L4DsQWgBYAm/36+vfOUrOuuss7R9+3Z5PJ4R+5SXl+utt97S0qVL9cQTT+jkyZOSpEAgoB07dqi7uzviz3e/+1319/dn+iMBSDOXEW/qSQBIk6NHj6qiosLUvoZhyOVypblEAOyM0AIAAByB5iEAAOAIhBYAAOAIhBYAAOAIhBYAAOAIhBYAAOAIhBYAAOAIhBYAAOAIhBYAAOAI/x8pFO0NYd+dIAAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 7
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "\n",
    "单变量线性回归，我们设定数据模型是一条直线, 收益 = 系数 * 人口 + 系数2。其中人口为x，系数使用k表示,系数2用b来表示，则 \n",
    "模型公式为： \n",
    "$$ f(x)= kx + b$$ \n",
    "其代价函数为:\n",
    "$$J\\left(k\\right)=\\frac{1}{2m}\\sum\\limits_{i=1}^{m}{{{\\left( {{f}}\\left( {{x}^{(i)}} \\right)-{{y}^{(i)}} \\right)}^{2}}}$$"
   ],
   "id": "15c476858bdc6622"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-01T06:46:55.683766Z",
     "start_time": "2024-08-01T06:46:55.680516Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def computeCost(x,y,b,k):\n",
    "    inner = np.power(k*x +b -y,2)\n",
    "    return np.sum(inner)/(2*len(x))"
   ],
   "id": "266c6115003dde47",
   "outputs": [],
   "execution_count": 32
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-01T06:48:11.304154Z",
     "start_time": "2024-08-01T06:48:11.298960Z"
    }
   },
   "cell_type": "code",
   "source": "computeCost(data.人口,data.收益,0,0)\n",
   "id": "1e66ac07b13a2b20",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "32.072733877455676"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 33
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "批量梯度下降\n",
    "$$k = k-\\alpha\\frac{d}{dk}J(k,b)$$\n",
    "$$b = k-\\alpha\\frac{d}{db}J(k,b)$$\n",
    "其中 $$\\alpha$$ 是学习率，$$\\frac{d}{dk}J(k,b)$$ $$\\frac{d}{db}J(k,b)$$ 是成本函数的导数\n",
    "将成本函数求导\n",
    "$$\\frac{d}{dk}J(k) = \\frac{d}{dk}\\frac{1}{2m}\\sum\\limits_{i=1}^{m}{{{\\left( {{f}_{k,b}}\\left( {{x}^{(i)}} \\right)-{{y}^{(i)}} \\right)}^{2}}} = \\frac{1}{m}\\sum\\limits_{i=1}^{m} (k{x}^{(i)}+b-y){x}^{i}$$\n",
    "$$\\frac{d}{db}J(k,b) = \\frac{d}{db}\\frac{1}{2m}\\sum\\limits_{i=1}^{m}{{{\\left( {{f}_{k,b}}\\left( {{x}^{(i)}} \\right)-{{y}^{(i)}} \\right)}^{2}}} = \\frac{1}{m}\\sum\\limits_{i=1}^{m} (k{x}^{(i)}+b-y)$$"
   ],
   "id": "1758ab4828e2487"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-01T08:58:32.716531Z",
     "start_time": "2024-08-01T08:58:32.711165Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def gradientDescent(x, y, k,b, alpha,iter):\n",
    "   i =0\n",
    "   differential = 1\n",
    "   costs = np.zeros(iter)\n",
    "   while differential != 0 and i < iter:\n",
    "       costs[i] = computeCost(x,y,b,k)\n",
    "       differential = np.sum((k * x +b -y) * x)/len(x)\n",
    "       k = k - alpha * differential\n",
    "       differential1 = np.sum((k * x +b -y))/len(x)\n",
    "       b = b - alpha * differential1\n",
    "       i += 1\n",
    "   print(f'k is {k},误差为:{k,computeCost(x,y,b,k)}')\n",
    "   return k , b,costs"
   ],
   "id": "cfed7f994afc2100",
   "outputs": [],
   "execution_count": 42
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-01T09:18:32.452358Z",
     "start_time": "2024-08-01T09:18:31.525813Z"
    }
   },
   "cell_type": "code",
   "source": [
    "iter = 2000\n",
    "k , b,costs = gradientDescent(data.人口,data.收益,1,0,0.019,iter)\n"
   ],
   "id": "ffe0425812cd118f",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "k is 1.1926645734212,误差为:(1.1926645734212, 4.476972604616741)\n"
     ]
    }
   ],
   "execution_count": 79
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-01T09:18:35.502771Z",
     "start_time": "2024-08-01T09:18:35.392040Z"
    }
   },
   "cell_type": "code",
   "source": [
    "x = np.linspace(data.人口.min(), data.人口.max(), 100)\n",
    "f = k * x +b \n",
    "fig, ax = plt.subplots(figsize=(12,8))\n",
    "ax.plot(x, f, 'r', label='人口')\n",
    "ax.scatter(data.人口, data.收益, label='Traning Data')\n",
    "ax.legend(loc=2)\n",
    "ax.set_xlabel('人口')\n",
    "ax.set_ylabel('收益')\n",
    "ax.set_title('预测 收益 vs. 人口')\n",
    "plt.show()"
   ],
   "id": "19280868d335cfc3",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1200x800 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA98AAAK5CAYAAACmKZ1DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACRkklEQVR4nOzdd3hU1b7G8XcyaZQwFIFEBAlgCwgcEASuXdGoBLAhCBY4qKBiBRtgCCjFgl0UGyKKBw+KYokdRAURETAnWICgiMEogUkoCWFm3z+WiYQkZFJm9szk+3kenute2TPzC8Zz8+611m85LMuyBAAAAAAA/CbC7gIAAAAAAAh3hG8AAAAAAPyM8A0AAAAAgJ8RvgEAAAAA8DPCNwAAAAAAfkb4BgAAAADAzwjfAAAAAAD4GeEbAAAAAAA/I3wDAAAAAOBnhG8AAELE/v37q3S/ZVlVGgcAAP5D+AYAwA8KCgqUm5tb7defffbZeuWVV0quf/75Z7Vq1UqvvfaaT6/fsGGDOnTooJUrV5YaX7Fihdq0aaNly5ZVu7ZgNmvWLC1ZssTuMgAAKIPwDQCos3bv3q2dO3dq7969KigoKPXH7XZr165dkiSPx6N+/frpqaeekiTl5uYqIyOjzJ8DZ6bnzZunjh07Vru2bdu2ad++fSXXn3zyiXJyctSuXTufXt++fXu1bNlSY8eOLTX+4osvKioqSr169ap2bcFs4sSJmjdvnt1lAABQRqTdBQAA4G+nn3661qxZo+joaDkcDklSnz591KVLF02dOlUxMTHat2+f9u/fr4YNG0oyM9fXXHONHnvsMTmdTp111lm6+eab9e2336pXr14aM2aM4uPjJZnl4Fu3btX27dvVtGlTSVJMTIxiYmKqXfOBtUrSggUL1LFjR/Xs2bPC1xQVFamwsFAxMTFyOp2655579O6775aM7d27V6+99ppmzpypqKgoeb1e7du3T16vV/Xr1692rcEkKipKLVq08Olej8ej7Oxsn9+7adOmYfP3BAAIPMI3ACDsvfLKK/J6vYqJidHSpUt11VVX6ZprrlFycrJSU1MlSWPHjtWGDRu0aNGict/j5ptvVo8ePbR792798ccf6tWrV8ny5s2bNysxMVHR0dE68cQTdckll5QEc1999tlnGjJkiDIzM0sCfLEtW7ZoyZIluuGGG/TDDz+UjHs8Hu3bt08tWrRQq1at9O677+qCCy4o895PPPFEqeuRI0dq5MiRJddXXnml5syZU6V6g1VUVJQiInxb2Pf777+rTZs2Pr/3vHnzNHTo0OqWBgCo4wjfAICwd/jhh2vq1KmqV6+eZsyYoXnz5ik5ObnUPT/99JO6detW4XtYlqX/+7//k6SSZc3r16/X3XffrTvuuKPkvtjY2GrNeEdEROiPP/5Qo0aNynxt1qxZcjgcmjt3rubOnStJysvLU0xMjLxer26//XZNmTJFZ511ljZu3KjY2Fg5nU45nU4VFBQoNja23M8sDu/R0dFVrjdY7dq1q2S7QGWKv+/PPvtMp5122iHvdTgcNVrJAAAAe74BAHXCGWecoenTp+voo4/WwIEDS8ZjYmIUHR2tDz/8UNOnT1dsbKyio6NLBdIPPvhAJ554on755ZdS72lZVpmZcofDUWq5uK+cTqckKTKy9HPx3bt36+mnn9b111+vnTt3lvxp1KiRXn/9dRUWFmrKlCmSpIYNG6pdu3Y6/PDD1bJlSy1cuFBnnHGGioqKdNhhh6lx48Y677zzNHPmTFmWpZYtW6p169Zq2bJllesNRrt379aOHTt8Xkpe1YcOhG8AQE0QvgEAYc2yLO3Zs0cnnniili1bpt69e8vr9ZZ8PTY2Vh9++KF2796tZcuW6c8//9SHH36oevXqldxzwgknqHHjxurZs6e+++67kvGoqChJUlxcnN/qnzlzpiRpyZIlJd3Pd+3aJbfbrcTExHJf4/V6NWHCBI0aNUoul0u//fabJMntdqtbt256+OGH1bZtW918883asmWLz7Xs3btXcXFxmj9/fqnxPn366JZbbim5Xrp0qU488UQ1aNBACQkJGjdunDweT5W+7+pYtWqVJOnzzz/36fOq+pCkOg9VAAAoRvgGAIS1P/74Qw0aNFBkZKSOPfZYPfDAAyXNzF566aWSAL1z50717NlT69atk/RPsJakZs2a6d1339Ull1yiVq1alfmMipZ115TH49G8efN03333qVOnTlq8eLEkae3atYqNjVWHDh3KvGbz5s0666yzNGPGDE2ePFkrVqxQjx49Sr6Pp59+Wps2bdLQoUP1+OOPq3379lq4cKFP9dSrV0/9+/fXO++8UzL2119/6euvv9all14qScrPz1e/fv10xBFH6P3339e0adP09NNP69lnn63pX0ellixZoiOOOEIej0dvvfWW3z8PAICqYM83ACCstWzZUgUFBYqJidHNN9+sXbt26d5771VCQkKpfb579+6VJB111FHKzMws8z5RUVF6+OGHFRkZWTJz/ueff6phw4YlS8Yty6rV2p1Op7777jvVr19fLVu21MiRI1VYWKjPP/9cffr0KbMMetGiRRoyZIiaNWumDz/8UL1791ZRUZGKiopK3dekSRM99thjGj58uB5++GGdd955Ptd06aWXavjw4fJ4PHI6nXrvvffUunXrkqPLtm/frl27dmnQoEE65ZRTdMopp+ioo45S48aNa/z3cSiWZWnu3LkaOnSonE6n7r33Xl1wwQXMVgMAggYz3wCAsFZeo6ycnBxdccUVOvLII0vG3G63IiMj1bx58wrf66WXXlJycrIKCgokSVu3bi01E15YWFjtOvPz8yWZpdNz587Vtm3bJKnkaKvzzz9fDodDCxYs0KuvvqqLL764zHskJydr0qRJatu2rc444wzVq1fvkH9OO+00LViwoNQS+8okJyfL6/Xqq6++kiS98847JbPektS2bVv169dPI0aM0IUXXqhp06apcePGNTrz3BdvvfWWsrKydMUVV2j06NH6/vvvw6aDOwAgPBC+AQB1TufOnfXSSy9JUsksdmZmptq3b18yU3rwbLEkPfnkk2ratKk6deqkSy+9VJ9//rnatGmjJk2aaMqUKYqNjS3pIF5VCxYskGRmlr/44osyM7YxMTEaMWKExowZoy1btuiyyy4r8x6xsbG644471Lx5c6WmpsqyLN1222267bbbZFmWXn75ZZ166qmyLEvLli2rVgOx6OhoDRw4UO+8846Kior04YcfavDgwaXuefvtt/Xee++pW7duSk9P1/HHH1/SId4f8vLydOONN2r48OFKSkrSEUccoZtuukm33nqrfv31V799LgAAVUH4BgDUacWz1YsWLVLv3r1Lxotnt4t99dVXWrt2re6++2716dNH1157rd555x2deeaZWrBggSZMmKCGDRuWHPNVVWlpaVq3bp02btyo2bNnl9uBvHPnznK73TrzzDPlcrkqfC9fP9/X87APNnjwYL3zzjtatmyZWrRooX/9618lX1u3bp3Gjx+vU089VRMmTNDSpUvVt29fv+75Hj16tPbu3av777+/ZGzKlClq3ry5+vXrp7/++stvnw0AgK/Y8w0AqNNef/117dq1SwsWLNCnn36q1157TaeeempJ47Viqamp6t+/v44//nhJ0iuvvKItW7bo2GOP1aBBg5SXl6fbbrtNH330kSRVeaa3TZs2h/z6U089pZtuukkXXnihPvzwQ918880lR6MF2plnnqmcnBw9/PDDZWa94+LiNHPmTEVGRuqcc87R77//rtWrVyslJaXknh9//FGRkZFq3759jerweDy64YYbtGjRIn3wwQdq1qxZydfq1aun119/XWeccYZOPvlkLViwoOTf3cH+/PPPko7wAAD4CzPfAICwt2fPHrndbm3durVkD3Uxj8ejK664QhMmTFCfPn30xRdfqEePHqXC93/+8x99/PHHGjt2rCTTVGzChAm6+uqrNWDAAM2cOVN33XVXqddUZ+n5gbxer7xer7788kudc845uuWWW3T//fdr4cKF+vTTT/Xmm2/qqKOO0uTJk/XDDz+oqKhIa9as0fr165Wfn6+//vpLP/zwg3Jzc5Wbm6sffvhB2dnZ2rNnj3744Qf9+uuv8nq9Wr9+vdatW6cdO3b4XFtkZKQuuuiiMvu9JSkxMVFvvvmmPvjgAyUnJ2vUqFE6++yz9eCDD5bcc+211+q2226r0d/PTz/9pNNOO01z5szRm2++qZNOOqnMPV26dNEnn3yiP//8Uz179tSdd96p3Nzckq8XH0c2aNAgtW7d+pB/pJrt6QcAwGHVdmtWAACCzKpVq9S3b18dc8wxmj17tjp37qwNGzbo2muv1dq1a/Xoo49q6NChJfcvX75cF198sYYNG6YZM2boqaee0ty5c7VixQrt27dPZ511ljZu3Ki1a9fqsMMOk2VZOumkk3Tqqadq6tSpuvbaa7Vo0SK1bdtWX3/9dbVqPu6443TRRRdp8eLFatCggZ555plSM7e7du3SI488otdff12LFy9WTEyM2rRpo3r16snpdPrc5buoqEgFBQV69dVXddFFF1Wr1kD7+eef1bVrV7Vp00avvfaaunTpcsj7f/vtN40ZM0ZLly7V8uXLdcwxx0gyDfOOOOIIffbZZ6U635fH4XBo3rx5pX5OAACoCsI3AKDOeu+999S7d281adKkzNe2bdumyMhIHXbYYZLMHvDY2FhZlqUFCxaobdu2OvHEE0vu//PPP0s6pb/88svatGmTrrrqqlId1atjz549qlevHkdmHWTZ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bNx2223R0NAQb3/722NgYGBOn2XGy1u+Xs9n3Y4w1+Xu8l7Pd92OMNflrtD3tTW7+hTqdUWt2YkFddddd6Xf/va3aWRkJI2MjKSxsbFZ9z9+/Hhqbm5OW7ZsSQcOHEirV69Ou3fvLlK1zNfZs2enezwyMpKOHDmS2tvb08GDB2c9rrOzM/3jH/+YPu7UqVNFqphrceLEibR27doUEenQoUMppZQmJibSrbfemh588ME0ODiYPvjBD6Yf/ehHV/0sM17e8vV6cHAwtba2pl/84hfp2LFj6ROf+ES6++675/R5Zrx85et1Ste+bqdkrstdvl7Pd91OyVyXs0Lf19bs6lOo15W2ZgvfC+j8+fOpqakpjY+Pz/mYJ554Ir3xjW9MU1NTKaWUfv3rX6eNGzdmVSIZ+fa3v50+97nPzbrPkSNHUkdHR5Eq4rV43/vel77//e/P+B+3HTt2pNbW1nT69OmUUkr79u1L73jHO676WWa8vOXr9c6dO9O2bdum99m9e3davHjxVT/LjJe3fL2ez7qdkrkud/l6fbm5rNspmetyV+j72ppdfQr1utLWbJedL6C///3vkVKKO++8M6677rpYt25dvPzyy7Mes3///njve98buVwuIiJ6enpi7969xSiXBTIxMRFPPvlkfO1rX5t1v97e3picnIzly5fH6173uvjkJz8ZIyMjRaqSa/HDH/4wvvzlL8/Ytn///li7dm1cf/31ERGxatWq6O/vv+pnmfHylq/X69evj89//vPTr//5z3/O6VJkM17e8vV6Put2hLkud/l6fam5rtsR5rrcFfq+tmZXn0K9rrQ1W/heQAMDA/GWt7wlfv7zn0d/f38sWrQoHnzwwVmPGRsbi66urunXzc3NcfTo0axLZQH97Gc/i7Vr18att946634HDhyIt73tbfHcc8/FSy+9FIcPH46vf/3rxSmSa3Lbbbddse3yWc3lclFfX3/VL2ozXt7y9fpS586di61bt8YXvvCFq36WGS9v+Xo9n3U7wlyXu6vN9VzX7QhzXUku/b62Zle3QmtzRazZRT/XXkMOHz6c6urq0ujoaMF97rvvvvTkk09Ov75w4UJqaGgoRnkskDVr1qTf/e5313zcn/70p9Te3p5BRSyUuOSSxcceeyw98sgjM95fvnx5+ve//z3rZ5jxyhAFLk999NFH01vf+tZ07ty5a/5MM16eCvU6pbmt2ymZ60pRqNfzXbdTMtfl7NLva2t2dSu0NlfCmt2QfbyvXUuXLo2pqakYGhqK5ubmvPu0tbXFiRMnpl+Pj4/H4sWLi1Uir9Hg4GAMDg7O69cRly5dGidPnoyzZ8/GkiVLMqiOhdTW1hZ9fX0zts1lXs145frDH/4QTz31VOzZsycWLVp0zceb8cozl3U7wlxXsteybkeY63J1+fe1Nbt6FVqbK2XNdtn5AvrKV74SzzzzzPTrF198Merq6mLFihUFj1mzZk3s2bNn+vW+ffviDW94Q6Z1snCeeeaZWL9+/ZyG/OMf//iMXr/44ovR0dFh8a4Ql8/q4cOH4+zZs9HW1nZNx5nxyvCvf/0rNm7cGNu2bYvu7u45HWPGK8981u0Ic13JrmXdjjDXlSDf97U1uzoVWpsrac0WvhfQnXfeGd/4xjfiL3/5S+zevTsefvjh+OxnPxvXX399jI2Nxfnz56845sMf/nD87W9/iz/+8Y9x4cKF2Lp1a7z//e8vQfXMx65du+I973nPjG2Fer1q1ap45JFH4oUXXojf/OY38c1vfnNO96RQHt71rnfF6Oho/PSnP42IiO985ztxzz33RH19fUQU7rsZrzz//e9/Y/369fHRj340PvKRj8SpU6fi1KlT08+INePVY7Z1O8JcV6N863aEua5Uhb6v3/nOd1qzq0yhXlfcmp35he015qtf/WpaunRpWrFiRfrSl740/by4W265Je3YsSPvMT/4wQ/SokWLUnt7e7rlllvSsWPHilgx83XmzJm0ePHiNDAwMGN7oV6fO3cu3X///ampqSndfvvtacuWLen8+fNFqpb5iMvuF9yxY0e67rrr0rJly9KNN96Y+vr6pt8z45UtLnusXERc8XfxfTNe2S6f60LrdkrmutJd3utC63ZK5rpSzfZ9bc2uLoV6/cQTT1TUmp1L6f/+WYCSGhwcjIGBgXj3u989631mQGkdPXo0Xnrppbj77rvjpptumvNxZhyqj7mG8mbNptwI3wAAAJAx93wDAABAxoRvAAAAyJjwDQAAABkTvgEAACBjwjcA1JCBgYE4efJkqcsAgJojfANADdm0aVM89dRTpS4DAGqO8A0ANaShoSFuvvnmUpcBADWnodQFAADFU19fHymlq+7T0tISdXX5/43+zJkzcd9998X27dszqBAAqpPwDQA15MSJEzEyMjLrPkuWLIne3t6444478r7/+OOPx9GjR7MoDwCqlsvOAaBGTExMxMsvvxz79++fdb/Fixdf9bPq6+sXqiwAqAnCNwDUiOeffz5aW1tj9+7dMTw8XOpyAKCmCN8AUCN+8pOfxMaNG+NjH/tYbN26tdTlAEBNcc83ANSAgwcPxq9+9at44YUXoq6uLtasWRP3339/wfu6AYCF5cw3AFS5ycnJeOCBB+KBBx6I7u7ueNOb3hRf/OIX41Of+lScOXOm1OUBQE0QvgGgik1OTsanP/3pGB0djW9961vT2x9//PGIiPjABz4QJ0+eLFF1AFA7hG8AqFIHDhyIe++9N/bt2xfPPfdc3HDDDdPvNTY2xu9///s4ffp0rFq1KrZv3x6Tk5MREXH+/Pno6emJ9vb2vH/f/e53p/cFAOZG+AaAKnTmzJn40Ic+FDfffHPs2bMnbrrppiv2aW1tjb/+9a/xmc98Jn784x/HhQsXIiLi7Nmz0dvbGydPnsz799hjj8W5c+eK/Z8EABUtl1JKpS4CAFh4w8PD0dbWNqd9U0qRy+UyrggAapfwDQAAABlz2TkAAABkTPgGAACAjAnfAAAAkDHhGwAAADImfAMAAEDGhG8AAADImPANAAAAGRO+AQAAIGP/C/Zffzy0MdGtAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 80
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-01T09:18:39.715737Z",
     "start_time": "2024-08-01T09:18:39.618714Z"
    }
   },
   "cell_type": "code",
   "source": [
    "fig,ax = plt.subplots(figsize=(12,8))\n",
    "ax.plot(np.arange(iter),costs,'r')\n",
    "ax.set_title('学习曲线')\n",
    "ax.set_xlabel('次数')\n",
    "ax.set_ylabel('成本')\n",
    "plt.show()"
   ],
   "id": "11ae45eb4ab2a931",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1200x800 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+cAAAK6CAYAAABbmS0hAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABQ/klEQVR4nO3de7xVdZ0//tdB7iIgYqJyDLzknSyT1MobiOZdY2bUHH9qk5aO5qVpojQrNasxU6fM8jJm4yXzVmppqYT6VbyQqARq3sVM0YgDIofb/v2xh6MIBwE5Z61z1vP5eKzHXnvvtfZ+bz7ts3v5/qy1Gmq1Wi0AAABAYboUXQAAAABUnXAOAAAABRPOAQAAoGDCOQAAABRMOAcAAICCCecAAABQMOEcAAAACiacAwAAQMGEcwDoQKZPn96y/tZbb+U73/lOZs+e3fJYrVbLIYcckt///vdtWseMGTNyxx135B//+EfL/euuuy6vvPJKm74vAHRWwjkAdBDf//73s8UWW+TRRx9Nkjz77LM544wzctxxx7Vsc9ttt+Waa67J3XffvcT+r776ah555JH8+c9/zhNPPLHM5S9/+csya3niiSey++6759lnn02S/O1vf8s//dM/5bHHHnvPz3HQQQflu9/97mKPjRs3LptuumnGjh2b+fPn5+WXX37P1wGAzqShVqvVii4CAHhvTU1N2X333fPcc8/l8ccfzzrrrJPzzjsv//mf/5knnngiQ4cOzSc+8Yn07t07t99+e7p0Wfy/wZ9//vk55ZRT0rVr13Tr1i2rrbbaUt9nzpw5WWeddfLCCy+0Wsvjjz+eYcOG5ZlnnsmGG26YqVOnprGxMWPHjs0uu+zS6n5PPPFEtthii9xyyy3Za6+9Wh6fOHFiPvKRj2TixIkZO3ZsfvCDH+Shhx7KoEGDVuwfCQA6qK5FFwAALJ++ffvmpptuyo033ph11lknSfLv//7vGTVqVIYOHZpf/epXeeyxxzJp0qQlgnmSfOlLX8qXvvSl93yfE088Mffcc88yt2loaEiSpb7Psnz729/OkUcemb322iszZ87MGmuskSTp379/kqR379454YQTMn78+DzxxBPCOQCVYVo7AHQAn/nMZ9LQ0JD11lsvxx13XBoaGtLQ0JBu3bplyy23TENDQ/75n/85s2bNypAhQ1qe/93vfrfY60yfPj2f/exnM3HixFbfq7m5uSU0L3LvvfemoaEh3bt3T8+ePbPtttsmSTbddNP07NkzG2+8cZJk1KhR6dmzZ3r27JmGhoZ8//vfb3mNcePG5Y477sj3vve9PP/881lvvfVy/fXXL/Y+s2bNyiOPPJKRI0fmpz/9aY488sj3888GAB2GzjkAdAC9e/fOXnvtlZ/+9KfLtf3s2bOz6aabpkePHos9/sYbb2Tq1KnZdttt87nPfS5nn3121lprrcW2mTNnTnr16rXYYz179kyS/P73v88uu+ySSZMmZeutt86TTz6ZIUOGtExrX/T8/Pnz061bt5b3f+KJJ3LooYfme9/7Xnr27JmvfvWrGTp0aNZaa63813/9V8aPH58k+fjHP57NNtssH/nIR7L11lvnIx/5yEr9ewFARyOcA0AHMXDgwKy//vp58803071793Tv3r3VbWfPnp0PfvCDLdPPF9l4440zbty4/O///m9OOumk3HTTTfnd737X0glP6p3zRWF8kdaOT38vi/a7995789e//jVHHXVUjj322MybNy8PPvhg7rnnntx///351Kc+lZtuuim33nprdt9995b9586dm+nTp2fNNddcqfcHgI5COAeADuAXv/hFkuT555/P0KFDl7ntiBEjcscdd+T5559vdZvDDjssI0eOzBlnnJEtt9xyseeam5uX6Li/O+SvqEMPPTSbbLJJPvaxj+VLX/pS+vbtm49+9KP56Ec/2nIc/FlnnZXJkydn9uzZeeyxx3Lffffl7rvvzle+8pWcfvrp7+v9AaDshHMA6EAGDx6cp59+Oj169Mhqq62WhoaGzJ07Nz/84Q/zox/9KB/84Adz2GGHLddrDRo0KD/+8Y+TJM8991yeeeaZjBw5cqnHnC8yatSodOnSJYsu9rLpppsuFtwXPf9uvXv3zs4775w//vGPufPOOzNp0qQkyV133ZUrr7wykydPzj/+8Y98/etfz7BhwzJs2LDsu+++OfXUU/PhD394hf6NAKAjckI4AOhAunbtmo022iiDBw/Ouuuum379+mXkyJG5+OKLc+aZZ2bKlCk54ogjluu15s6dmxtuuCF77bVXNt5449x8881J6secv3ta+yK///3vM2fOnEyYMCFJ8uSTT2bOnDl5+umnF3t+1qxZS+z7pz/9KQcffHDOP//8vPXWW5k8eXLmzp2bDTbYIF//+tfzuc99LnvttVfuu+++fOMb38g111yTXr16pU+fPivxLwUAHYvOOQB0AH/+859Tq9XSteviP90LFy7MM888k+985zvZf//988wzz7Q8N3fu3HzgAx9Y7HJkCxcuzD333JNf/vKX+eUvf5muXbvmsMMOy/e///1stdVWSZZ+zPn7VavVss8+++TVV1/NQQcdlCTZYIMN8uyzz2bPPfdMksybNy/HHXdcpk2blgMOOCDTpk1basgHgM5IOAeADuDQQw/NM888s0Q4T+qB+9vf/nbOPvvsxR6fO3duzjjjjJxyyilJklNPPTUXX3xxXnvtteywww656KKLcuCBBy7xmm0RzhsaGnLJJZekT58+2WijjbLuuusuMf191KhRaWpqylZbbZWBAwfmvvvuy7rrrrtK6wCAshLOAaADePTRR1t9rk+fPrnkkkty8MEHL/M1dt111zzzzDM56aSTMnz48Fa3+9vf/pbVV199sccWHWP+fuy1116ZPn16nnrqqfzmN7/JAw88kC222CJf+cpXkiQTJkxIt27dMm3atNx9991Zd911M2vWLNPaAagE4RwAKmLEiBEZMWLEEo83NTXlpz/9aRoaGvLQQw/lpZdeytZbb73YNvPnz0+y4ieEW7hwYZLksccey0477ZQZM2ZkwIAB+eQnP5kdd9wxe+21V2bOnJmzzjor5557bk488cTcdNNN+cpXvpLrr78+Z511Vh5++OH84Q9/WOX/HgBQJsI5AHRAr732Wu6+++689tprefPNN9OtW7eVfq2+ffvmt7/9be67774MHTo0J598cvbbb7/Ftmlubk5SP+HbLrvs8p6vOX/+/HTr1i1z5sxJkgwbNizf/OY3s+2222bHHXdsuf756aefnv/+7/9Or169cvPNN2ePPfbI5z73uey0007ZcsstM3Xq1BxzzDEr/dkAoKNoqK2KeWoAQLtqbm5OY2NjZs2alR122CG//OUvM3DgwJV+vblz56Z79+6rsMLl85vf/Cb33Xdfvva1r6Vv374tjz/77LP593//93Tp0iW//OUvl5hmDwCdjXAOAB3UzJkzW70eOQDQsQjnAAAAULAu770JAAAA0JaEcwAAACiYcA4AAAAFE84BAACgYJW5zvnChQvz17/+NWussUYaGhqKLgcAAIBOrlarZebMmVlvvfXSpcuye+OVCed//etf09jYWHQZAAAAVMxLL72UwYMHL3ObyoTzRdeBfemll9K3b9+CqwEAAKCza2pqSmNjY0seXZbKhPNFU9n79u0rnAMAANBulufQaieEAwAAgIIJ5wAAAFAw4RwAAAAKJpwDAABAwYRzAAAAKJhwDgAAAAUTzgEAAKBgwjkAAAAUTDgHAACAggnnAAAAULBCwvnll1+ehoaGJZbLL798mfvtu+++i20/cuTI9ikYAAAA2lDXIt700EMPzQEHHNByf9asWfnIRz6SnXbaaZn7TZgwIY8//ngGDx6cJOnWrVtblgkAAADtopBw3r1793Tv3r3l/oUXXpiDDjooG264Yav7TJ06NbVaLVtttVV7lAgAAADtpvBjzufMmZPzzz8/Y8aMWeZ2Dz74YBYsWJDBgwdn9dVXz8EHH5zp06e3U5UAAADQdgoP51dddVW23377DBkyZJnbPfXUU9l2221z++235+GHH87zzz+fr33ta61u39zcnKampsUWAAAAKKOGWq1WK7KA4cOH51vf+lY+/elPr9B+48aNy+jRozNt2rSlPv/Nb34z3/rWt5Z4fMaMGenbt+9K1QoAAADLq6mpKf369VuuHFpoOH/66aczfPjwvPrqqyt8crdHH30022yzTebMmZMePXos8Xxzc3Oam5tb7jc1NaWxsVE4BwAAoF2sSDgvdFr7tddem3322We5gvno0aMzfvz4lvsPPfRQBg0atNRgniQ9evRI3759F1sAAACgjAoN57fddlt23XXXxR5ramrKvHnzlth22LBhOemkk/LAAw/klltuyWmnnZZjjz22vUoFAACANlNYOH/rrbfywAMPZIcddljs8WHDhuXWW29dYvsxY8Zkiy22yO67754TTzwxX/ziF9/zDO8AAADQERR+Qrj2siJz/QEAAOD96jDHnAMAAADCOQAAABSua9EF8C6PP55Mm5Zsummy/vpFVwMAAEA70Dkvm9NPT0aMSG65pehKAAAAaCfCeVlV4zx9AAAARDgvn4aGoisAAACgnQnnZaVzDgAAUBnCednonAMAAFSOcF5WOucAAACVIZyXjc45AABA5QjnZaVzDgAAUBnCednonAMAAFSOcF5WOucAAACVIZyXjc45AABA5QjnZaVzDgAAUBnCednonAMAAFSOcF5WOucAAACVIZyXjc45AABA5QjnZaVzDgAAUBnCednonAMAAFSOcF5WOucAAACVIZyXjc45AABA5QjnZaVzDgAAUBnCednonAMAAFSOcF5WOucAAACVIZyXzaLOuXAOAABQGcJ52ZjWDgAAUDnCeVnpnAMAAFSGcF42OucAAACVI5yXlc45AABAZQjnZaNzDgAAUDnCeVnpnAMAAFSGcF42OucAAACVI5yXlc45AABAZQjnZaNzDgAAUDnCeVnpnAMAAFSGcF42OucAAACVI5yXlc45AABAZQjnZaNzDgAAUDnCeVnpnAMAAFSGcF42OucAAACVI5yXlc45AABAZQjnZaNzDgAAUDnCeVnpnAMAAFSGcF42OucAAACVI5yXlc45AABAZQjnZaNzDgAAUDnCeVnpnAMAAFSGcF42OucAAACVI5yXlc45AABAZQjnZaNzDgAAUDnCeVnpnAMAAFSGcF42OucAAACVI5yXlc45AABAZQjnZaNzDgAAUDnCeVnpnAMAAFSGcF42izrnwjkAAEBlCOdlY1o7AABA5QjnZaVzDgAAUBnCednonAMAAFSOcF5WOucAAACVIZyXjc45AABA5QjnZaVzDgAAUBnCednonAMAAFSOcF5WOucAAACVIZyXjc45AABA5QjnZaVzDgAAUBnCednonAMAAFSOcF5WOucAAACVIZyXjc45AABA5QjnZaVzDgAAUBnCednonAMAAFSOcF5WOucAAACVIZyXjc45AABA5QjnZaVzDgAAUBnCednonAMAAFSOcF5WOucAAACVIZyXjc45AABA5QjnZaVzDgAAUBnCednonAMAAFSOcF5WOucAAACVIZyXjc45AABA5QjnZaVzDgAAUBnCednonAMAAFROIeH88ssvT0NDwxLL5Zdfvsz9xo0bl8033zwDBw7Mueee2z7FFkXnHAAAoDIKCeeHHnpopk+f3rK89NJLGThwYHbaaadW95k2bVr222+/HHLIIbn//vtz5ZVXZuzYse1YdTvROQcAAKicrkW8affu3dO9e/eW+xdeeGEOOuigbLjhhq3uc+WVV2bdddfNaaedloaGhnzjG9/IpZdeml133bU9Sm5/OucAAACVUUg4f6c5c+bk/PPPzwMPPLDM7R599NHstttuafi/zvLw4cMzZsyYVrdvbm5Oc3Nzy/2mpqZVU3BbW9Q5F84BAAAqo/ATwl111VXZfvvtM2TIkGVu19TUlKFDh7bc79u3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AFApwnkZmdYOAABQKcJ5GZnWDgAAUCnCeRnpnAMAAFTKCoXzWq2WE088canPzZkzJ7vvvntefvnlFSrgq1/9avbdd9/l2nbcuHHZfPPNM3DgwJx77rkr9D4dis45AABApaxQOG9oaMill1661OeOPvrovPnmm1l77bWX+/UmTZqUCy+8MOedd957bjtt2rTst99+OeSQQ3L//ffnyiuvzNixY5f7vToUJ4QDAAColBWe1t6jR4/F7s+fPz+f+9znMnHixPzmN79J9+7dl+t1arVajjnmmJx44onZaKON3nP7K6+8Muuuu25OO+20bLLJJvnGN77R6n8o6PBMawcAAKiUFQ7nXbq8vcv48eOzww47ZPr06bnrrrvyqU99arlf5+KLL87EiRMzdOjQ3HLLLZk3b94yt3/00Uez2267peH/guvw4cPzpz/9qdXtm5ub09TUtNjSYZjWDgAAUCkrHM7nz5+fCy+8MJ/85Cfz+c9/PqeffnpuuOGGrLXWWvnb3/62XK8xa9asnHrqqdlkk00yderUnHvuudlpp50yZ86cVvdpamrK0KFDW+737dt3mce3n3322enXr1/L0tjYuPwfsmg65wAAAJXSdXk3vOSSS9K9e/fMmjUr3/72tzN69Ohst912+fvf/54rrrgiSbJw4cJcdtllmTNnTo499thWX+uGG27Im2++mbvuuisDBgzImDFjsvXWW+eKK67I0UcfvfRCu3ZdbEp9z549M3v27FbfY8yYMTn55JNb7jc1NXWcgK5zDgAAUCnLHc6vvvrq9O7dOwsXLsyCBQvy4osv5sUXX0ztHQGyubk51157bebOnbvMcD516tR8/OMfz4ABA+pFdO2aYcOG5bnnnmt1nwEDBmTatGkt92fOnLnM49t79OixxPHxHYYTwgEAAFTKcofzO++8M0l9OvmAAQPyzDPP5MQTT8xRRx2V1VZbLUmy9tpr57bbbnvP12psbMxbb7212GMvvPBCdt1111b32W677XL11Ve33J84cWLWX3/95S2/YzGtHQAAoFJW+Jjznj175sknn8yPf/zj3HDDDdlqq61y5513Zt68ecucZv5Oe++9d6ZMmZKLLrooU6dOzQUXXJCJEydmzz33TFNT01JPDrfffvvl3nvvzdixYzN//vycc8452WOPPVa0/I7h//5jR+bPL7YOAAAA2sVyd87fbZdddskuu+yS3/72tznyyCNz5JFHLvPs6e80YMCA3HbbbTnllFNy8sknZ9CgQbnmmmsyZMiQDBkyJOedd14OOOCAxfYZOHBgfvCDH2SPPfZIv379svrqq3feS6ktmq7/HmewBwAAoHNoqNVW7Kxj/fr1y4wZMxZ77JVXXsmBBx6YLbfcss0D89NPP50pU6Zk5513Tt++fZd7v6amppbaV2S/Qmy/ffLAA8mvf53st1/R1QAAALASViSHrtC09oULF2bttdde4vF11103t912W+69995cfPHFK1btCtp4442z7777lj9gvx+LOudz5xZbBwAAAO1ihaa1d+nSJU8//fRSn+vfv39uvvnm9OrVa5UUVmnCOQAAQKWsUOf8rbfeyoEHHpgkmT59+hLPf/7zn8+QIUMyfPjwvPnmm6umwioSzgEAACplucP5l7/85Zx00km54447ktTPuL7zzjtn/PjxLduMGzcul156aR555JHMmTNn1VdbFcI5AABApSxXOL/iiityyy235LTTTkv3/wuOP/nJT/Lxj388e++9d/7pn/4pL7/8cm666aaccsopOeOMM7LWWmu1aeGdmnAOAABQKct1zPl+++2XESNGZP31189q/3cN7g9/+MP58Ic/nP333z9HHnlkNtpoowwYMCBXX311Ro0a1aZFd3rCOQAAQKUsVzj/zW9+k7Fjxyapnwp+9913z9/+9re88MIL6dOnT3bYYYccccQR+eEPf5gFCxa0acGVIJwDAABUynKF89VXXz1DhgxJ796906NHj5xyyikZPHhw1l9//ay55pot2+26667Zb7/9Mnbs2Gy11VZtVnSnJ5wDAABUynKF88985jP5zGc+kyT5r//6r+y5555Jku9+97vp379/1lprray11lrZYIMNcuaZZ+aQQw7JhAkTWo5PZwUJ5wAAAJWyQtc5f7dvfetbOeSQQzJr1qy88cYbeeihh/Ltb387n/zkJ/PWW28J5ytLOAcAAKiUFQ7ntVptsfuXXXZZy/oPf/jDjB07Nr/+9a/ff2VVJpwDAABUygqH84aGhqWuJ8mIESMycuTI919V1QnnAAAAlbLC4fzvf/97y+XUarVaevbsmdVXXz3rr79+tt566xx44IHZcsst06XLcl1CnaURzgEAACplhcP5a6+9loaGhpaueXNzc6ZPn54nn3wyd999d044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/vfrt1ddlYwfX3RFAAAApSOc0/Y++tHkiCPq61/6UrJwYaHlAAAAlI1wTvv4zneSPn2SBx9M/vd/i64GAACgVIRz2segQW8fc/7VryazZhVbDwAAQIkI57SfE09MNtwweeWV5LvfLboaAACA0hDOaT89eybnnFNfP+ccl1YDAAD4P4WF8+OPPz4NDQ0ty8Ybb/ye+4wbNy6bb755Bg4cmHPPPbcdqmSVO+CAZNddk+bm5KSTiq4GAACgFAoL5xMmTMitt96a6dOnZ/r06XnkkUeWuf20adOy33775ZBDDsn999+fK6+8MmPHjm2nalllGhqS//7vpGvX5KabkltuKboiAACAwhUSzufPn59JkyZlp512Sv/+/dO/f/+sscYay9znyiuvzLrrrpvTTjstm2yySb7xjW/k0ksvbaeKWaW23DI5+eT6+vHHJ7NnF1sPAABAwQoJ54899lhqtVq22Wab9OrVK3vuuWdefPHFZe7z6KOPZrfddktDQ0OSZPjw4fnTn/7U6vbNzc1pampabKFETjstaWysH3d+5plFVwMAAFCoQsL5lClTsuWWW+bqq6/O5MmT061btxxzzDHL3KepqSlDhw5tud+3b9+8/PLLrW5/9tlnp1+/fi1LY2PjKqufVaBPn+SCC+rr55yTTJlSbD0AAAAFaqjVarWii3jhhRey4YYbZvr06enbt+9St/mXf/mXfOITn8gJJ5yQJFmwYEF69uyZefPmLXX75ubmNDc3t9xvampKY2NjZsyY0ep70M5qtWS//erHne+yS3LXXfVj0gEAADqBpqam9OvXb7lyaCkupda/f/8sXLgwr7zySqvbDBgwINOmTWu5P3PmzHTv3r3V7Xv06JG+ffsutlAyDQ317nmvXskf/5j8/OdFVwQAAFCIQsL5ySefnGuvvbbl/kMPPZQuXbosc+r5dtttl/Hjx7fcnzhxYtZff/02rZN2MHRocvrp9fWTTkqW8R9oAAAAOqtCwvk222yTr3/967n77rtz11135fjjj88RRxyR3r17p6mpaalT1ffbb7/ce++9GTt2bObPn59zzjkne+yxRwHVs8qdckqy7bbJP/6RHHtsfbo7AABAhRQSzg8//PCMHj06+++/f4444oiMGjUqF/zfycGGDRuWW2+9dYl9Bg4cmB/84AfZY489su6662bSpEk59dRT27t02kLX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dtH6mmu2b+0AALAMwvlSCOfQgdRqyYsvLh7WH388eeqpxa+7/m5rr10P6RtumAwduviy/vquyQ4AQLvqcOF8zz33zMEHH5wjjjhimdvtu+++ueWWW1rujxgxInfcccdyvYdwDp3A/PnJCy8kTz5ZX5566u31v/512ft261afEv/O4N7YWD97/Prr15devdrncwAAUAkrkkO7tlNNrbryyitz++235+CDD37PbSdMmJDHH388gwcPTpJ069atrcsDyqRr12SjjerLXnst/tzMmfWw/pe/JM89t/jywgvJvHnJM8/Ul9astVY9pA8e/HZoX3Q7aFCyzjr17rwOPAAAq1ih4fzvf/97TjnllGy66abvue3UqVNTq9Wy1VZbtUNlQIezxhr1M75vu+2Szy1YkLz88uKB/fnnk6lT315mz07eeKO+PPZY6+/T0JAMHFgP6sta1l47GTAg6d3bZeIAAHhPhYbzU045JQceeGDeeuut99z2wQcfzIIFCzJ48OBMnz49++67b37yk59kzVZOANXc3Jzm5uaW+02tnVwK6PxWW60+pX2DDZKdd17y+VotmTFj8bA+dWo90C9af/XV5PXX69tOm1ZfJk167/fu0aMe0tdaa+m3717v16++rLGGDj0AQIUUFs7Hjh2bO++8M5MmTcoJJ5zwnts/9dRT2XbbbXPOOeekS5cuOfLII/O1r30tP/nJT5a6/dlnn51vfetbq7psoDNqaEj6968vy5qdM39+PaC/+mp9ee21t9ffvbz+en0qfXNz8sor9WVF9enzdljv2/e911dfvb7P6qsvuQj6AAClVsgJ4ebMmZNhw4blhz/8Yfbee+8cccQR2WWXXd7zhHDvNG7cuIwePTrTpk1b6vNL65w3NjY6IRzQPmq15M03k7//vT5Vfnlu//73egf/HX+7VpmePRcP60sL8X361Kfh9+y5+NKr14o91rWrqfwAAOkAJ4Q744wzst1222Xvvfde6dfo379/Xn/99TQ3N6dHjx5LPN+jR4+lPg7QLhoa6mG3T5/6dPoV0dxcv877jBn1ZdH60h575/qbbyazZtVvFy0LF9Zfc86c+vLGG6v+s75bly5vB/YePZLu3etLt25vr7f22PJs887HunatL6ut9vb6it5/r227dPEfGwCANldIOL/qqqsybdq09O/fP0kye/bsXHvttXnwwQdz4YUXLnWf0aNH58tf/nK23377JMlDDz2UQYMGCeBA59OjR/2Ecmuv/f5ep1arB/J3hvWlBfh33n/rrfqyKMzPmbN89995/fmFC+sn2Js9+/3VXyaLAvtqq9WXLl3qyzvXl/VYe2zb0NA2S1u+9vK+5yLv/o8krT1XhvWy1PF+ay2KGtSgBjUsj169kh12KLqKVaaQcH7PPfdk/vz5LfcXhe4jjjgiTU1N6dWr1xKXSRs2bFhOOumknHfeeZk2bVpOO+20HHvsse1dOkDH0dBQ/9Hq1at+hvm2tHBhveP/zvC+KLTPm1e/XbQs6/6KbDt3bv1M/PPnv728+/7SHmvt/oIFrX++BQuW/TwA0P422ih5+umiq1hlCgnni65TvkifPn0ycODADBw4MEOGDMl5552XAw44YLFtxowZkxdeeCG77757PvCBD+SLX/xixowZ045VA9CqLl3e/g8BrVxFo/RqtcWDemuBfuHC+rJgwdvr71xae7wt91mwoF5/Wy0LF7bt6y/rPd85Pu8er7Kul6WO91tre6nKexb1vlV5z6Le12ctVmNj0RWsUoWcEK4IK3IgPgAAALxfK5JDu7RTTQAAAEArhHMAAAAomHAOAAAABRPOAQAAoGDCOQAAABRMOAcAAICCCecAAABQMOEcAAAACiacAwAAQMGEcwAAACiYcA4AAAAFE84BAACgYMI5AAAAFEw4BwAAgIIJ5wAAAFAw4RwAAAAKJpwDAABAwYRzAAAAKJhwDgAAAAUTzgEAAKBgwjkAAAAUTDgHAACAggnnAAAAUDDhHAAAAAomnAMAAEDBuhZdQHup1WpJkqampoIrAQAAoAoW5c9FeXRZKhPOZ86cmSRpbGwsuBIAAACqZObMmenXr98yt2moLU+E7wQWLlyYv/71r1ljjTXS0NBQdDmtampqSmNjY1566aX07du36HJohXHqGIxTx2Ccys8YdQzGqWMwTh2DcSq/jjJGtVotM2fOzHrrrZcuXZZ9VHllOuddunTJ4MGDiy5jufXt27fU/yOjzjh1DMapYzBO5WeMOgbj1DEYp47BOJVfRxij9+qYL+KEcAAAAFAw4RwAAAAKJpyXTI8ePXL66aenR48eRZfCMhinjsE4dQzGqfyMUcdgnDoG49QxGKfy64xjVJkTwgEAAEBZ6ZwDAABAwYRzAAAAKJhwDgAAAAUTzgEAAKBgwnmJTJo0Kdttt13WXHPN/Md//Eecq684v/71r7Phhhuma9eu+fjHP54pU6YkSY4//vg0NDS0LBtvvHHLPsav/bU2HssaC+PUvi6//PLFxmjRcvnll/s+FeyNN97I0KFD8/zzz7c8trLfHePVdpY2Tq39RiV+p4qytHFa2bEwTm3n3eO0rN+oxPepCK39favK75NwXhLNzc3Zd999s+222+bhhx/O5MmTW/4w0L6eeeaZHHnkkfnud7+bl19+OR/84Afzb//2b0mSCRMm5NZbb8306dMzffr0PPLII0mMX1GWNh7LGgvj1P4OPfTQlvGZPn16XnrppQwcODA77bST71OBXn/99eyzzz6LBYmV/e4Yr7aztHFa1m9U4neqCEsbp2TlxsI4tZ2ljdOyfqMS36f21trft0r9PtUohRtvvLG25ppr1t58881arVarTZw4sfaJT3yi4Kqq6eabb6795Cc/abl/11131bp3716bN29ebY011qjNnDlziX2MX/trbTyWNRbGqXhnnXVW7eijj/Z9KtiIESNq5513Xi1J7bnnnqvVaiv/3TFebWdp49Tab1St1vrfxVrNOLWlpY3Tyo6FcWo7Sxund1v0G1Wr+T4VobW/b1X6fdI5L4lHH30022+/fXr37p0kGTZsWCZPnlxwVdW0zz775Atf+ELL/SeffDIbb7xxHnvssdRqtWyzzTbp1atX9txzz7z44otJjF8RWhuPZY2FcSrWnDlzcv7552fMmDG+TwX72c9+li996UuLPbay3x3j1XaWNk6t/UYlrf9dTIxTW1raOK3sWBintrO0cXqnd/5GJb5PRWjt71uVfp+E85JoamrK0KFDW+43NDRktdVWy/Tp0wusirlz5+acc87JsccemylTpmTLLbfM1VdfncmTJ6dbt2455phjkhi/IrQ2HssaC+NUrKuuuirbb799hgwZ4vtUsA033HCJx1b2u2O82s7Sxumd3vkblbT+dzHxvWpLSxunlR0L49R23uv79M7fqMT3qWjv/PtWpd+nrkUXQF3Xrl3To0ePxR7r2bNnZs+enTXXXLOgqjj11FPTp0+fHH300enWrVs++9nPtjz3ox/9KBtuuGGampqMXwE++9nPLnU8Nttss1bHwjgV66KLLsq3vvWtJK2Pn+9TcZb1776yzxmvtvXO36jE96pMVnYsjFNx3vkblfg+Fe2df99OPfXUyvw+6ZyXxIABAzJt2rTFHps5c2a6d+9eUEX84Q9/yEUXXZSrrroq3bp1W+L5/v37Z+HChXnllVeMXwksGo9Bgwa1OhbGqThPP/10nn766YwcOXKpz/s+FW9Z/+4r+xxt571+oxLfqzJZ3rEwTsV4r9+oxPepPb3771uVfp+E85LYbrvtMn78+Jb7zz//fJqbmzNgwIACq6quZ599Np/97Gfzk5/8JFtssUWS5OSTT861117bss1DDz2ULl26pLGx0fgVoLXx2HrrrVsdC+NUnGuvvTb77LNPS4jwfSqfZf27r+xztI2l/UYlvldlsrJjYZyK8e7fqMT3qShL+/tWqd+nIs9Gx9vmzZtXW3vttWs///nPa7VarXbMMcfU9tlnn4KrqqbZs2fXNt9889rnP//52syZM1uWyy+/vLbxxhvXxo0bV7vzzjtrm222We2oo46q1WrGrwg///nPlzoeyxoL41ScT33qU7XLLrus5X5r41erGaf2lHedXXplvjvGq+29c5xa+41auHCh71XB3jlOKzsWxqntZSlna3/3b1St5neqCK39fZs7d25lfp+E8xK58cYba7169ap94AMfqK211lq1SZMmFV1SJd144421JEsszz33XO2rX/1qrX///rXGxsbaCSecUJs1a9Zi+xm/9tXaeCxrLIxT+5s9e3ate/futSlTpiz2uO9T8d79f1JX9rtjvNpW3nXJu9Z+o2o136sivfv7tLJjYZza1rvHqbXfqFrN96m9LevvW1V+nxpqtVqtHRv1vIeXX345Dz/8cHbcccesvfbaRZfDCjJ+5bGssTBOHYNxKsbKfneMV8dgnMrD96njM07tqwq/T8I5AAAAFMwJ4QAAAKBgwjkAAAAUTDgHAACAggnnAAAAUDDhHABIkrz22mv5+9//XnQZAFBJwjkAVNDUqVMze/bsxR679NJLs88++7S6z89+9rM888wzueKKK7LPPvtkzpw5Ofnkk5Mkxx13XC699NI2rRkAOjPhHAAq6Mtf/nKOOuqoxR67/vrr85WvfKXVfQYMGJB/+Zd/Sbdu3dKtW7f86le/yhtvvJEkueeee7Leeuu1ac0A0JkJ5wBQQT/60Y9y33335fzzz0+STJgwIRMmTMjnPve5DBw4cLHlyiuvzNy5c9PQ0JCDDjoojz/+eF5//fU89dRT2WKLLfL444/nqaeeys4775wkWbhwYZqbm4v8eADQ4TTUarVa0UUAAO1v3LhxOfDAA/Pcc8/l8MMPz4477pj//M//bHl+2rRpWXfddTN16tT06dMnxx13XJqamnLTTTdlo402yogRIzJ//vwMGDAgF110UdZZZ53MmTMnb7zxRg477LBcfPHFBX46AOhYhHMAqLDXXnst48ePzwknnJApU6bknnvuyc9+9rNcd911ufTSS3PJJZfk/vvvT5K8/PLLOeigg7LBBhtkzpw5mTVrVq6++uocfvjhGT58eM4888zcdtttOe+883LbbbcV/MkAoGPpWnQBAEBx1lprrXzoQx/KFVdckV69emXmzJl5/vnnkyTDhg3Ld7/73STJpEmTss8+++SCCy5Ic3Nzrrvuuvzrv/5rvva1r+Wuu+7KgAEDkiSvvPJK1l9//aI+DgB0WMI5AFTUvHnzst122+Wqq67KTjvtlKTeHZ8xY0aSZLvttmvZdvPNN8/48ePTt2/fbLHFFrnnnnvS2NiYN998M4MGDcqVV16ZJHnuueey6aabtv+HAYAOzgnhAKCiLrvssixcuDAf+tCHWh4bO3Zsnn/++UyePHmxbR944IF87GMfy+DBgzNjxozsuuuuGThwYK677rp85zvfyXrrrZeHHnoo99xzT3bcccf2/igA0OEJ5wBQQTNmzMgZZ5yRH/3oR+natT6RbvLkyXnggQdy/vnn5+STT87ChQtbtt9xxx0zderUbLbZZrn55pvz9NNPZ/vtt8/hhx+eJDnqqKPy5S9/OU8++WSGDx9eyGcCgI7MCeEAoIIOP/zwzJ07N9dcc02S5G9/+1tGjBiRk08+OUceeWRGjhyZ9dZbL5dcckl69uyZJPnrX/+az3/+85k6dWo22WST3H333XnmmWeyxhprZPbs2Rk4cGCOOeaY/PCHPyzyowFAhyScA0DFPPjgg9ltt90yZcqUNDY25o477sjnPve5HHbYYTnrrLOSJE1NTRkxYkRqtVp++tOfZtttt23Z/+qrr85//Md/ZNSoUXnkkUcyduzYHH300XnjjTfyyCOP5JprrsmoUaOK+ngA0CGZ1g4AFTN8+PBMnjw5jY2NOfvsszN69OicddZZLcE8Sfr27Zu77rorm2++efbaa6+8+OKLOeecc/Kxj30sN954Yx544IFcdtll+cIXvpBhw4Zl6NCh+cMf/pBLL700Bx10UL73ve8V+AkBoOPROQeACnvzzTcza9asrLPOOq1u89prr+UDH/hA/ud//ic77rjjYmdj/+1vf5v1118/H/7wh1see+yxx9K/f/9ssMEGbVo7AHQmwjkAAAAUzLR2AAAAKJhwDgAAAAUTzgEAAKBgwjkAAAAUTDgHAACAggnnAAAAUDDhHAAAAAomnAMAAEDB/n8eiEPBlv8I3AAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 81
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": "",
   "id": "35ccbffcf423ff0f"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
